package Hot_100;/*
给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
例如，121 是回文，而 123 不是。
示例 1：

输入：x = 121
输出：true
示例 2：

输入：x = -121
输出：false
解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3：

输入：x = 10
输出：false
解释：从右向左读, 为 01 。因此它不是一个回文数。

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
* */


/*
思路: 先判断,负数不是回文数

* */
public class T9_isPalindrome {
    public static void main(String[] args) {
/*
        String s=1223+"";
        System.out.println(s);
*/
        System.out.println(isPalindrome_2(121));
    }

//    解法3：先转反转后的数字，然后进行比较（反转的过程要判断是否溢出）


//    解法2：调用reverse函数
    static boolean isPalindrome_2(int x) {
        String s = String.valueOf(x);
        System.out.println(s);
        String s1 = new StringBuffer(x+"").reverse().toString(); // x+"" 转字符串
        System.out.println(s1);
        return s.equals(s1);
    }

//    解法1:转为字符串
    public boolean isPalindrome_1(int x) {
        if (x < 0) {
            return false;
        }


//        先将整数转为字符串
        char[] charArray = String.valueOf(x).toCharArray();

//        验证
        int begin=0,end=charArray.length-1;
        while (begin <= end) {
            if (charArray[begin] != charArray[end]) {
                return false;
            }
            begin++;
            end--;
        }
        return true;
    }
}
